package restlet.runtime;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class RESTConfiguration {

	List<RESTModule> modules = new ArrayList<RESTModule>();
	Map<String, RESTModule> modulesByURI = new HashMap<String, RESTModule>();

	public void compile() {
		modulesByURI.clear();
		for (RESTModule module : modules) {
			modulesByURI.put(module.getName(), module);
		}
	}

	public void remove(String name) {
		RESTModule resource = modulesByURI.get(name);
		modules.remove(resource);
		modulesByURI.remove(name);
	}

	public void replace(String name, RESTModule newResource) {
		RESTModule resource = modulesByURI.get(name);
		modules.remove(resource);
		modules.add(newResource);
		modulesByURI.put(name, newResource);
	}

	public void addModule(RESTModule newResource) {
		modules.add(newResource);
		modulesByURI.put(newResource.getName(), newResource);
	}

	public List<RESTModule> getModules() {
		return modules;
	}

	public void setModules(List<RESTModule> modules) {
		this.modules = modules;
	}

}
